package ar.com.uade.administradorsiembra.vista;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.SpinnerListModel;

import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.SwingUtilities;

import ar.com.uade.administradorsiembra.modelo.exceptions.LoteInexistenteException;
import ar.com.uade.administradorsiembra.modelo.exceptions.PropietarioInexcstenteException;
import ar.com.uade.administradorsiembra.views.LoteCompuestoView;
import ar.com.uade.administradorsiembra.views.LoteView;
import ar.com.uade.administradorsiembra.views.MineralView;
import ar.com.uade.administradorsiembra.views.PropietarioView;
import ar.com.uade.administradorsiembra.controladores.ABMCerealController;
import ar.com.uade.administradorsiembra.controladores.ABMLoteCompuestoController;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class AgregarLoteCompuestoGUI extends javax.swing.JFrame {
	private JLabel jNumeroLoteCompuestoLabel;
	private JPanel jLotesQueComponenPanel;
	private JComboBox jComboBoxPropietarios;
	private JLabel jLabel1;
	private JButton jAgregarButton;
	private JButton jCancelarButton;
	private JList jLotesQueComponenList;
	private JComboBox jMineralPrincipalLoteComboBox;
	private JLabel jMineralPrincipalLoteLabel;
	private JTextField jNumeroLoteCompuestoTextField;
	private ABMLoteCompuestoController loteController;
	private List<LoteView> lotes;
	private List<PropietarioView> propietarios;
	private LoteCompuestoView loteCompuesto;
	private List<MineralView> mineralesView;

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
		} catch(Exception e) {
			e.printStackTrace();
		}
	}


	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void iniciar() {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				AgregarLoteCompuestoGUI inst = new AgregarLoteCompuestoGUI();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public AgregarLoteCompuestoGUI() {
		super();
		initGUI();
		cargarMinerales();
	}
	
	private void cargarMinerales() {
		mineralesView = this.loteController.getMinerales();
		
		for (MineralView mineralView : mineralesView) {
			jMineralPrincipalLoteComboBox.addItem(mineralView.getNombre());
		}
	}
	
	private void initGUI() {
		try {
			this.loteCompuesto = new LoteCompuestoView();
			this.loteController = ABMLoteCompuestoController.getInstancia();
			this.lotes = this.loteController.getLotes();
			this.propietarios = this.loteController.getPropietarios();
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			this.setTitle("Agregar Lote Compuesto");
			{
				jNumeroLoteCompuestoLabel = new JLabel();
				getContentPane().add(jNumeroLoteCompuestoLabel);
				jNumeroLoteCompuestoLabel.setText("Numero de Lote Compuesto");
				jNumeroLoteCompuestoLabel.setBounds(24, 27, 153, 14);
			}
			{
				jNumeroLoteCompuestoTextField = new JTextField();
				getContentPane().add(jNumeroLoteCompuestoTextField);
				jNumeroLoteCompuestoTextField.setBounds(181, 24, 85, 20);
			}
			{
				jMineralPrincipalLoteLabel = new JLabel();
				getContentPane().add(jMineralPrincipalLoteLabel);
				jMineralPrincipalLoteLabel.setText("Mineral Principal del Lote");
				jMineralPrincipalLoteLabel.setBounds(24, 52, 137, 14);
			}
			{
				
				ComboBoxModel jMineralPrincipalLoteComboBoxModel = 
					new DefaultComboBoxModel();
				jMineralPrincipalLoteComboBox = new JComboBox();
				getContentPane().add(jMineralPrincipalLoteComboBox);
				jMineralPrincipalLoteComboBox.setModel(jMineralPrincipalLoteComboBoxModel);
				jMineralPrincipalLoteComboBox.setBounds(159, 49, 104, 20);
				jMineralPrincipalLoteComboBox.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jMineralPrincipalLoteComboBoxActionPerformed(evt);
					}
				});
			}
			{
				jLotesQueComponenPanel = new JPanel();
				getContentPane().add(jLotesQueComponenPanel);
				jLotesQueComponenPanel.setBounds(24, 80, 341, 165);
				jLotesQueComponenPanel.setBorder(BorderFactory.createTitledBorder(""));
				jLotesQueComponenPanel.setLayout(null);
				{
					ListModel jLotesQueComponenListModel = 
						new DefaultComboBoxModel();
					jLotesQueComponenList = new JList();
					jLotesQueComponenPanel.add(jLotesQueComponenList);
					BoxLayout jLotesQueComponenListLayout = new BoxLayout(jLotesQueComponenList, javax.swing.BoxLayout.Y_AXIS);
					jLotesQueComponenList.setLayout(jLotesQueComponenListLayout);
					jLotesQueComponenList.setModel(jLotesQueComponenListModel);
					jLotesQueComponenList.setBounds(28, 14, 275, 128);
				}
			}
			{
				jCancelarButton = new JButton();
				getContentPane().add(jCancelarButton);
				jCancelarButton.setText("Cancelar");
				jCancelarButton.setBounds(286, 310, 79, 23);
				jCancelarButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						System.out.println("jCancelarButton.actionPerformed, event="+evt);
						//TODO add your code for jCancelarButton.actionPerformed
						dispose();
					}
				});
			}
			{
				jAgregarButton = new JButton();
				getContentPane().add(jAgregarButton);
				jAgregarButton.setText("Agregar");
				jAgregarButton.setBounds(191, 310, 76, 23);
				jAgregarButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jAgregarButtonActionPerformed(evt);
					}
				});
			}
			{
				jLabel1 = new JLabel();
				getContentPane().add(jLabel1);
				jLabel1.setText("Propietarios");
				jLabel1.setBounds(15, 268, 137, 14);
			}
			{
				ArrayList<String> propietariosItems = new ArrayList<String>();
				for (PropietarioView propietarioView : this.propietarios) {
				propietariosItems.add(
					new String(propietarioView.getApellido() + ',' + " " + propietarioView.getNombre())
					);
				}
				ComboBoxModel jComboBox1Model = 
						new DefaultComboBoxModel( propietariosItems.toArray());
				jComboBoxPropietarios = new JComboBox();
				getContentPane().add(jComboBoxPropietarios);
				jComboBoxPropietarios.setModel(jComboBox1Model);
				jComboBoxPropietarios.setBounds(169, 265, 104, 20);
				jComboBoxPropietarios.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jComboBox1ActionPerformed(evt);
					}
				});
			}
			pack();
			this.setSize(422, 408);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void jAgregarButtonActionPerformed(ActionEvent evt) {
		try {
			this.loteController.crearLoteCompuesto(this.loteCompuesto.getNumeroLote(),
													this.loteCompuesto.getLotes(),
													this.loteCompuesto.getPropietario().getDni());
		} catch (PropietarioInexcstenteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (LoteInexistenteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void jMineralPrincipalLoteComboBoxActionPerformed(ActionEvent evt) {
		LoteView lote = this.lotes.get(this.jMineralPrincipalLoteComboBox.getSelectedIndex());
		this.jLotesQueComponenList.add(new JTextField(
				lote.getNumeroLote().toString())
			);
		this.loteCompuesto.addLote(lote);
	}
	
	private void jComboBox1ActionPerformed(ActionEvent evt) {
	this.loteCompuesto.setPropietario(
			this.propietarios.get(this.jComboBoxPropietarios.getSelectedIndex())
			);
	
	}

}
